package cn.jr.service.impl;

import cn.jr.dao.IOrderProjectDao;
import cn.jr.dao.IWareDao;
import cn.jr.dao.impl.OrderProjectDaoImpl;
import cn.jr.dao.impl.WareDaoImpl;
import cn.jr.pojo.OrderProject;
import cn.jr.pojo.Wares;
import cn.jr.service.IOrderProjectService;
import cn.jr.util.DBHelper;

import java.util.ArrayList;

@SuppressWarnings("all")
public class OrderProjectServiceImpl implements IOrderProjectService {

    IWareDao iwd = new WareDaoImpl();
    IOrderProjectDao iopd =  new OrderProjectDaoImpl();


    //查询 某一订单 里的 一个商品 by 订单主键 和 商品编号(orderId,waresNumber)
    @Override
    public OrderProject getOrderProByOIdAndNum(int orderId, String waresNumber) {
        return iopd.queryOrderProByIdAndNum(orderId,waresNumber);
        // 如果 返回的那条数据 的waresNumber 是空的， 就是没有
        // 可以用来判断 存不存在 存在就执行  修改  操作，只给数量+1
    }
/*    @Override //添加数量+1
    public boolean changeWaresCountByOIdAndNum(int orderId, String waresNumber,int waresCount) {
        OrderProject orderProject = getOrderProByOIdAndNum(orderId,waresNumber);
        return iopd.updateWaresCountByOIdAndNum(orderId,waresNumber,waresCount)>0?true:false;
    }*/

    //更新(1.结账时 添加)：数量+1，同时计算并 更新价格
    @Override
    public boolean changeAnOrderProByOIdAndNum(int orderId, String waresNumber, int waresCount
            , double waresPrice, double activeMoney) {
        return iopd.updateAnOrderProByOIdAndNum(orderId,waresNumber,waresCount,waresPrice,activeMoney);
    }

    //更新(2.退货时 修改)：数量=waresCount-returnCount，同时 计算 并 更新 价格
    @Override
    public boolean changeAnOrderProByIdAndNumAndRCount(int orderId, String waresNumber, int waresCount
            , int returnCount, double waresPrice,double activeMoney) {
        return iopd.updateAnOrderProByOIdAndNum(orderId,waresNumber,waresCount-returnCount,waresPrice,activeMoney);
    }

    @Override //查询数量
    public Integer getWaresCountByOIdAndNum(int orderId, String waresNumber) {
        Integer warseCount = iopd.queryOrderProByIdAndNum(orderId,waresNumber).getWaresCount();
        return warseCount;
    }

    @Override//添加订单项表
    public boolean addOrderProject(int orderId,String waresNumber,int addCount) {
        Wares wares = iwd.queryWaresByWareNumber(waresNumber);
        return iopd.insertOrderPro(orderId,wares,addCount)>0?true:false;
    }

    @Override//从 购物车里 删除 商品
    public boolean removeOrderProject(int orderId, String waresNumber) {
        return iopd.deleteOrderPro(orderId,waresNumber)>0?true:false;
    }

    @Override//添加后的 展示/查询 -- 通过订单主键，在订单项表查询所有 当前订单里的商品
    public ArrayList<OrderProject> getOrderProByOrderId(int orderId) {
        return iopd.queryAllOrderProByOId(orderId);
    }

    @Override //查询 订单项表 里的 同一种商品 by 商品编号(waresNumber) -- 记账统计用
    public ArrayList<OrderProject> getOrderProByWaresNum(String waresNumber) {
        return iopd.queryOrderProByWaresNum(waresNumber);
    }
}
